home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
taropyon
/
splib
/
splib.lzh
/
PRG
/
LHX
/
HCLIB.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-12-08
|
1KB
|
84 lines
#include "lh386.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <msdos.cf>
#include <status.cf>
#include "lh.h"
#include "typedef.h"
#include "direct.h"
#ifdef __HIGHC__
# pragma On(Align_labels);
#endif
void *memmove(void *dest, void *src, size_t size)
{
if ((int) dest < (int) src)
memcpy(dest, src, size);
else
_rmemcpy(dest, src, size);
return dest;
}
#if 0
int getch(void)
{
Registers.AX.LH.H = 0x8;
calldos();
return Registers.AX.LH.L;
}
#endif
void *stpcpy(void *a, void *b)
{
strcpy(a, b);
return (void *) ((long) a + (long) _find_char(a, _MAXSTRING, 0));
}
long filesize(FILE * fp)
{
long now, size;
now = ftell(fp);
fseek(fp, 0L, SEEK_END);
size = ftell(fp);
fseek(fp, now, SEEK_SET);
return size;
}
char *getcwd(char *buf, int max)
{
char namebuf[256];
char *name = namebuf;
Registers.AX.R = 0x4700;
Registers.DX.R = 0x0000;
Registers.SI.R = (int) name + 3;
Registers.DS.R = getds();
calldos();
if ((Registers.Flags & 0x0001) != 0)
*(name + 3) = '\0';
Registers.AX.R = 0x1900;
calldos();
*(name++) = 'A' + (Registers.AX.R & 0xFF);
*(name++) = ':';
*(name++) = '\\';
if (*name != '\0')
strcat(name, "\\");
if (buf == NULL)
buf = e_malloc(max + 1);
strncpy(buf, name, max);
return buf;
}